package com.iwdnb.gkgz.common.prediction;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import cn.hutool.core.date.DateUtil;
import com.iwdnb.gkgz.common.model.dto.StockDayData;
import com.iwdnb.gkgz.common.model.dto.StockPredictionData;

/**
 * 先以当日收盘价  S
 * 当日最高价  H
 * 当日最低价  L
 * 求出一个均价    J
 * J=(S x 2 + H + L) x 1/4
 * 有了当日均价 J 就能计算出明日的可能的最高价和最低价了：
 * 公式：
 * 求明日最高价：明高= J + H - L
 * 明日最低价：明低= J x 2 - H
 */
public class SecondPredictionHelper implements PredictionHelper {
    @Override
    public StockPredictionData predictionStock(StockDayData stockDayData) {
        BigDecimal average = stockDayData.getClosePrice().multiply(new BigDecimal(2))
            .add(stockDayData.getMaxPrice())
            .add(stockDayData.getMinPrice())
            .divide(new BigDecimal(4));
        StockPredictionData prediction = new StockPredictionData();
        prediction.setCode(stockDayData.getCode());
        Date date = DateUtil.offsetDay(DateUtil.parseDate(stockDayData.getDate()), 1);
        prediction.setDate(DateUtil.formatDate(date));
        prediction.setMaxPrice(average.add(stockDayData.getMaxPrice()).subtract(stockDayData.getMinPrice()));
        prediction.setMinPrice(average.multiply(new BigDecimal(2)).subtract(stockDayData.getMaxPrice()));
        return prediction;
    }
}
